package org.song.model.entity;

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import javax.persistence.Column;
import javax.persistence.Id;
import javax.persistence.Table;
import java.util.Date;
import java.util.List;

@ApiModel("")
@Table(name = "`api`")
@Data
public class ApiEntity {
    /**
     * 主键
     */
    @Id
    @Column(name = "`id`")
    @ApiModelProperty("主键")
    private Long id;

    /**
     * API名称
     */
    @Column(name = "`name`")
    @ApiModelProperty("API名称")
    private String name;

    /**
     * API请求地址
     */
    @Column(name = "`url`")
    @ApiModelProperty("API请求地址")
    private String url;

    /**
     * API请求方式：GET、POST、PUT、DELETE
     */
    @Column(name = "`method`")
    @ApiModelProperty("API请求方式：GET、POST、PUT、DELETE")
    private String method;

    /**
     * 父ID
     */
    @Column(name = "`pid`")
    @ApiModelProperty("父ID")
    private Long pid;

    /**
     * 描述
     */
    @Column(name = "`description`")
    @ApiModelProperty("描述")
    private String description;

    /**
     * api的类型 0为父级别，1为子级别
     */
    @Column(name = "`type`")
    @ApiModelProperty("api的类型 0为父级别，1为子级别")
    private Byte type;

    /**
     * 创建时间
     */
    @Column(name = "`create_time`")
    @ApiModelProperty("创建时间")
    private Date createTime;

    /**
     * 更新时间
     */
    @Column(name = "`update_time`")
    @ApiModelProperty("更新时间")
    private Date updateTime;

    @ApiModelProperty( value = "子API集合")
    private List<ApiEntity> children;

    public List<ApiEntity> getChildren() {
        return children;
    }

    public void setChildren(List<ApiEntity> children) {
        this.children = children;
    }

    /**
     * 删除标记 0：未删除 1：已删除
     */
    @Column(name = "`deleted`")
    @ApiModelProperty("删除标记 0：未删除 1：已删除")
    private Byte deleted;

    /**
     * 获取主键
     *
     * @return id - 主键
     */
    public Long getId() {
        return id;
    }

    /**
     * 设置主键
     *
     * @param id 主键
     */
    public void setId(Long id) {
        this.id = id;
    }

    /**
     * 获取API名称
     *
     * @return name - API名称
     */
    public String getName() {
        return name;
    }

    /**
     * 设置API名称
     *
     * @param name API名称
     */
    public void setName(String name) {
        this.name = name;
    }

    /**
     * 获取API请求地址
     *
     * @return url - API请求地址
     */
    public String getUrl() {
        return url;
    }

    /**
     * 设置API请求地址
     *
     * @param url API请求地址
     */
    public void setUrl(String url) {
        this.url = url;
    }

    /**
     * 获取API请求方式：GET、POST、PUT、DELETE
     *
     * @return method - API请求方式：GET、POST、PUT、DELETE
     */
    public String getMethod() {
        return method;
    }

    /**
     * 设置API请求方式：GET、POST、PUT、DELETE
     *
     * @param method API请求方式：GET、POST、PUT、DELETE
     */
    public void setMethod(String method) {
        this.method = method;
    }

    /**
     * 获取父ID
     *
     * @return pid - 父ID
     */
    public Long getPid() {
        return pid;
    }

    /**
     * 设置父ID
     *
     * @param pid 父ID
     */
    public void setPid(Long pid) {
        this.pid = pid;
    }

    /**
     * 获取描述
     *
     * @return description - 描述
     */
    public String getDescription() {
        return description;
    }

    /**
     * 设置描述
     *
     * @param description 描述
     */
    public void setDescription(String description) {
        this.description = description;
    }

    /**
     * 获取api的类型 0为父级别，1为子级别
     *
     * @return type - api的类型 0为父级别，1为子级别
     */
    public Byte getType() {
        return type;
    }

    /**
     * 设置api的类型 0为父级别，1为子级别
     *
     * @param type api的类型 0为父级别，1为子级别
     */
    public void setType(Byte type) {
        this.type = type;
    }

    /**
     * 获取创建时间
     *
     * @return create_time - 创建时间
     */
    public Date getCreateTime() {
        return createTime;
    }

    /**
     * 设置创建时间
     *
     * @param createTime 创建时间
     */
    public void setCreateTime(Date createTime) {
        this.createTime = createTime;
    }

    /**
     * 获取更新时间
     *
     * @return update_time - 更新时间
     */
    public Date getUpdateTime() {
        return updateTime;
    }

    /**
     * 设置更新时间
     *
     * @param updateTime 更新时间
     */
    public void setUpdateTime(Date updateTime) {
        this.updateTime = updateTime;
    }

    /**
     * 获取删除标记 0：未删除 1：已删除
     *
     * @return deleted - 删除标记 0：未删除 1：已删除
     */
    public Byte getDeleted() {
        return deleted;
    }

    /**
     * 设置删除标记 0：未删除 1：已删除
     *
     * @param deleted 删除标记 0：未删除 1：已删除
     */
    public void setDeleted(Byte deleted) {
        this.deleted = deleted;
    }
}
